Automated detection of building entrances

ABSTRACT

Embodiments of a method and system described herein enable capture of video data streams from multiple, different video data source devices and the processing of the video data streams. The video data streams are merged such that various data protocols can all be processed with the same worker processors on different types of operating systems, which are typically distributed. In an embodiment the multiple video data sources comprises at least one mobile device executing a video sensing application that produces a video data stream for processing by video analysis worker processes. The processes include automatically detecting features in an urban scene comprising building entrances.

RELATED APPLICATIONS

This application is a divisional application of U.S. patent applicationSer. No. 15/134,245, filed Apr. 20, 2016. U.S. patent application Ser.No. 15/134,245 claims priority from the following U.S. ProvisionalApplication No. 62/150,623, filed Apr. 21, 2015; 62/150,629, filed Apr.21, 2015; 62/150,646, filed Apr. 21, 2015; 62/150,654, filed Apr. 21,2015; 62/150,667, filed Apr. 21, 2015; and 62/150,692, filed Apr. 21,2015. This application is also a continuation-in-part of U.S. patentapplication Ser. No. 14/727,321, filed Jun. 1, 2015 and acontinuation-in-part of U.S. patent application Ser. No. 15/078,611,filed Mar. 23, 2016.

FIELD OF THE INVENTION

Embodiments disclosed herein are in the field of video data processing,in particular object detection and pattern recognition.

BACKGROUND

Various techniques exist for processing digital video data for purposesof image recognition, pattern recognition, object detection, etc.Typically, video data is captured by one type of processing device andthen analyzed by that device or by another type of processing devicewhich has received the captured data. For example, one method includesacquiring visual image primitives from a video input comprising visualinformation relevant to a human activity. The primitives are temporallyaligned to an optimally hypothesized sequence of primitives transformedfrom a sequence of transactions as a function of a distance metricbetween the observed primitive sequence and the transformed primitivesequence. Another method detects a moving target with the use of areference image and an inspection image from the images captured by oneor more cameras. A moving target is detected from the reference imageand the inspection image based on the orientation of correspondingportions in the reference image and the inspection image relative to alocation of an epipolar direction common to the reference image and theinspection image; and displays any detected moving target on a display.

Current video data processing techniques typically operate on one typeof video input data. Making available a larger source of data aggregatedfrom multiple sources into a combined source has not been possible forindividual contributors.

In addition, it has proven challenging to process large amounts ofstreaming video data effectively.

It would be desirable to have a system and method for receiving digitalvideo data from multiple sources of different types and be able toanalyze the raw data as a single data source from the different sourcesto determine facts about a scene both at a point in time and over aperiod of time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an activity monitoring and video processingsystem according to an embodiment.

FIG. 1A is a block diagram of an activity monitoring and videoprocessing system according to an embodiment.

FIG. 1B is a block diagram of an activity monitoring and videoprocessing system according to an embodiment.

FIG. 2 is a flow diagram illustrating one video processing algorithmaccording to an embodiment.

FIG. 3 is a flow diagram showing more detail of detection of activityareas from video data according to an embodiment.

FIG. 4 is a flow diagram showing more detail of deriving waiting linesegmentation from video data according to an embodiment.

FIG. 5 is a flow diagram showing more detail of deriving measurements ofattributes from video data according to an embodiment.

FIG. 6 is a diagram illustration of segmentation of a waiting line fromvideo data according to an embodiment.

FIG. 6A is a flow diagram of a queue time estimation method according toan embodiment.

FIG. 7 is shows a user interface display with a waiting line as capturedby a video camera with currently calculated attributes imposed on theimage.

FIG. 8 is a flow diagram of an object detection and classificationmethod according to an embodiment.

DETAILED DESCRIPTION

Embodiments described herein include a system and method for video dataprocessing. Video data from multiple streaming sources is processed inorder to determine the status of various aspects of environments. Thevideo data processing system uses video streams to measure activitylevels in the physical world. This provides information that enablespeople and businesses to interact more effectively and efficiently withphysical locations and cities.

In an embodiment, the video data processing system uses input videostreams from a variety of sources. Sources include existing video feedssuch as security cameras, video feeds contributed by system usersthrough old smartphones placed in a fixed location simple webcams, orembedded sensors that contain a video feed and some video analysissoftware. The system includes a backend subsystem consisting ofspecially programmed processors executing software that manages videofeeds, processes the video feeds into data, stores the data, andcomputes analytics and predictions.

Embodiments facilitate the processing and analysis of any possible videosource, whatever its type or support. These sources include: existingpublic video cameras in the form of standard video streams; existingpublic video feeds in the form of .jpg files regularly updated on awebsite; simple webcams; security cameras installed for securitypurposes but whose feeds can be ingested by the video data processingsystem to extract data; video streams or files coming from old cellphones that run a video sensing application specific to the video dataprocessing system. The sensing application can either produce actualvideo streams or encore video files, and pushes them on a hosted storageserver such as FTP server or Amazon S3 server. Using a smartphone as avideo sensor, a capture device is configured to stream data out throughfiles. This solves a major problem of setting cameras and exportingtheir feeds to a different network location on the internet.

The system thus provides a unified framework to intake video framescoming from these various described sources, and to unify theirgeolocation and time reference so as to be able to compare anygeolocated or time stamped data extracted from them.

In an embodiment using a smart phone, consecutive video files on thesmartphone are encoded, time stamped, and pushed to an FTP server toproduce a stable stream of video content without having to have a videostreaming server in the loop, but rather a simple file server.

These video feeds are produced by multiple types of entities, including:companies or entities that own video feeds, and provide them forfree—e.g. the DOT in New York; companies or entities (e.g. retailers)that own video feeds, and provide them to the video data processingsystem in exchange for having them transformed into valuable data;companies or organizations that are paid for access to the video feedsthey own and operate—e.g. earthcam; companies with whom there is nomonetary exchange, e.g. they provide their feed, in exchange for aminimal amount of data for free; and individual contributors who use oldsmart phones or contribute old cell phones which are hung on windows orwall surface. By running the sensing application on these old phones,new video data processing system video feeds are created.

Compiling video data from many different sources to create data insightsand analytics has more scaling network effect than all single datasources combined. This is made possible in part by aggregating data frommultiple sources (including individual contributors) into a combined,stable source.

Embodiments include various video algorithms dedicated to transforming avideo signal into data and measurements. Embodiments further includedata algorithms that combine measurements from video feeds with lowerresolution activity maps, weather information, and local event data, toinfer place activity in space and time. An output interface includestools to turn the data extracted from videos into human readableinformation and useful actions.

FIG. 1 is a block diagram of a video data processing system architecture100 according to an embodiment. Input video sources 102 can includepublic cameras, security cameras, mobile applications, and any otherdevice capable of capturing digital video streams. This includes aproprietary protocol to do continuous streaming over long periods oftime. A feedback loop is used to reconstruct data, and to identify andsolve bandwidth issues.

The input video sources 102 are very varied in nature and quality aspreviously described. A backend subsystem 104 receives video datastreams from the input video sources 102. Feed management module 112receives the video data streams. Other management modules include aworker management module 114, a locations management and geographicintelligence module 116, and a data storage module 118. As used herein,“worker” implies one or more servers and one or more processors forprocessing data. Workers can be distributed geographically, andprocessing tasks may be distributed among workers in any fashion. Datastorage module 118 is shown as a single module existing in backend 104.However, actual data storage can be, and typically is, distributedanywhere over the internet. Data storage module 118 is thus a datamanagement module and possibly actual data storage, but not all datawill be stored locally.

Input video sources 102 also communicate with a contributor managementmodule 110. Contributor management module 110 oversees and tracks thevarious input video sources, including their locations and “owners”. Insome instances, individual owners are paid for making their video dataavailable to the system. Video analysis workers 106 represent multiplespecial purpose processors tasked with executing video analysis workerprocesses as further described below. Analyzed video data is stored bydata storage manager 118, and also further analyzed by data analyticsmodule 108 as further described below. Data analytics module 108represents special purpose processors executing data analyticsprocesses. Data analytics module 108 further has access to external datasources 122, which provide data such as weather information, eventinformation related to a location of the video data, etc. Data analyticsmodule 108 may combine external data with the output of the videoanalysis workers 106 to produce more meaningful output data that isstored by data storage management 118 and output to user interface anduser applications 120. User interface and applications 120 makeprocessed video data available to users in a highly accessible form.User interface 120 is available in various embodiments on any computingdevice with processing capability, communication capability, and displaycapability, including personal computers and mobile devices.

In an embodiment, backend 104 is a multi-layered system whose rolesinclude: registering all existing video streams and their sources; ifthe source is a contributor, storing availability and contactinformation to provide data or to pay them, based on the availability oftheir sensors; managing “worker” processes that process all video feedsin a different subsystem, and will report data to backend 104; gatheringand storing data extracted from video streams; consolidating and mergingall data from various sources (e.g., video measurements, weather APIs);packaging and serving data for applications or as an output of backend104; and architecturally removing the dependency of the video algorithmprocessor on the various sources of data.

According to one aspect of backend 104, it serves to coordinate thedistribution of all input sources and worker processes over differenttypes of networks and environments. FIG. 1A is a block diagramillustrating this concept. A worker application programming interface(API) 222 is defined for worker processes running on worker farms suchas worker farm 1 and worker farm 2. Worker processes are softwareprocesses that can run on any operating system such as Linux, Mac OS orWindows with sufficient random access memory (RAM) and centralprocessing unit (CPU) power to register with backend 104 over a WideArea Network (WAN), assign individual video feeds with correspondingalgorithm parameters and specifications, and then start processing thatfeed and reporting output data back to the same API 220 endpoint family.These worker processes also report on their level of activity, CPU andRAM occupancy, as well as availability. Thus the video data processingsystem can instantiate worker processes in many varied environments,leveraging available platforms that can contribute CPU power.

Various applications APIs 220 can be used to allow various applicationsto communicate data to data APIs 224.

The video data processing system executes various video algorithms andvarious data algorithms. In an embodiment, the video algorithms arebased on a layered stack of algorithms. In an embodiment, thesealgorithmic layers are based on the assumption that video feeds have astatic viewpoint and an average frame rate greater than 0.2 frames perseconds, but embodiments are not so limited.

FIG. 1B is an alternative illustration of a system embodiment 101illustrating the processing of video streams. Two main types of videodata sources are IP camera 102A and mobile sensor 102B. Although 102Aand 102B are listed as singular in the figure, there are typicallymultiple IP cameras 102A and mobile sensors 102B. IP cameras installedby customers that export a video stream (usually an RTSP stream) to theInternet. A video worker 106 can consume these directly over theInternet via standard video protocols such as RTSP. For mobile sensors102B, embodiments of the system include mobile apps for iOS and Android(not shown) that stream video using a proprietary protocol.

There is no solution today to continuously send video from a mobilephone to a server over long periods of time—think months, 24/7. Videostreaming from mobile apps poses several challenges. Video streaminglibraries for the iOS and Android are of poor quality, badly supportedand/or unreliable, especially for purposes of the current embodimentwhere it is intended to stream 24/7. With video streaming libraries onecan publish a stream from a mobile app, but this stream needs to becaptured by a streaming server and restreamed for consumption (e.g., bya video worker). A streaming server is a complex piece of infrastructureto maintain and non-trivial to scale.

A protocol according to an embodiment addresses these issues. The mobileapp continuously captures video clip files of a given length L from itscamera. The timestamp T at which the clip was captured is embedded inthe file metadata. When a video clip is ready it is uploaded directly todedicated file storage in the cloud (many easily scalable distributedsolutions are available for this kind of storage). A video worker thatis processing a mobile app stream, polls the file storage or the latestvideo clips. It downloads the latest clip, processes the video in it,using frame timestamps derived from the embedded timestamp T. When it isdone it cleans up file storage and keeps polling until the next clip isavailable. A video worker will consider a stream broken if after a givenamount of time polling file storage no new clip arrived. When we detectmissing data or files, we remotely command the mobile application toreduce video bitrate if possible.

This results in a loss-less video streaming protocol that is notentirely real-time (clips are processed at least with a delay of L). Forour use case this delay in real-time processing is acceptable, as longas we can reconstruct the timestamp of any given clip or frame.

Video Algorithms

Moving object detection is a layer is that detects moving objects ormoving parts in the image. It is based on estimating the backgroundimage of a fixed video stream, by modeling each point using a Gaussiandistribution of values on each channel of a color image, or theamplitude of the combined channels. Each pixel is then modeled as:Gaussian distributions for all channels of the color image; a Gaussiandistribution for the pixel luminance expressed as a linear combinationof the three color channels.

Such a model is created and stored in memory for each coordinate pointof an image. As new frames arrive in the system, the Gaussian modelestimation is updated with the new values of each pixel at the samecoordinate by storing the sum S of the pixel values over time, and thesum T of squared values. Given the total number of observations is N,the average and standard deviation of the Gaussian model can then beevaluated as S/N for the mean value and (2S−S*S)/N for the square valueof the standard deviation.

In order to adjust the Gaussian values to potential changes in the meanand standard deviation, these values are computed on moving timewindows. In order to reduce the complexity of computing all values overa moving averages, a half distance overlapping scheme is used. If M isthe minimum window size (number of samples) over which mean and standarddeviation is to be estimated, two sets of overlapping sums and squaresums are constantly stored: the current sum set and the future sum set.Each set has the number of samples and the sum of values and the sum ofsquare values. When the first set reaches M samples, the second set isreset, and then updated with each new frame. When the first set reachesM*2 samples, the future set reaches M samples. The future set values arethen copied into the current set values, and the future set is reset.This way, at any point in time after M first samples, the estimation ofthe Gaussian model always has more than M samples, and it is adjustedover time windows of M*2 samples. M is typically set to values rangingfrom 10 to 1000 depending on applications and video frame rates.

Once a new frame comes in, for each pixel location in an image, it isfirst assessed whether the current value is part of the background ornot. To do so, the normalized distance of the current pixel values iscomputed for each color channel with the background mean values for eachchannel. The normalized distance is the distance of the current point tothe closest mean adjusted with the standard deviation for the backgroundimages. This distance is then normalized towards the amplitude of eachchannel or the average of all channels. The raw distance calculated fromabove is divided by a uniform factor of the average values.

If this normalized distance is greater than a predefined threshold, thepixel is classified as a foreground pixel and assigned to the movingobjects. If not, the pixel is deemed as part of the background, it isnot assigned to the front end masks but used to update the currentbackground models.

At any point in time, the algorithm assumes that there could be a rapidchange in background, so it maintains a candidate background point. Thatpoint is either updated or created for each point detected as aforeground point.

If the image is too large, the image can be subsampled by an integerfactor to evaluate a lower resolution version of the background. Also,the background statistics can be updated only once every n frames. Thisis very efficient to make the algorithm real time whatever the dimensionor frame rate of a video. The CPU occupancy of such a process iscontrolled and defined with these two parameters. This is a unique wayto linearly adjust algorithm reactivity and accuracy based on availableor desired computation power.

The object classification layer classifies moving foreground objects(described with reference to the previous layer) into classes of knownobjects or “noise”. In one embodiment, a customized version of the HaarPyramid approach is used here. Once all moving objects have beendetected, they are classified using a classic supervised learningapproach, based on the Haar-like feature Cascade classification (asdescribed in P. A. Viola, M. J. Jones: Robust Real-Time Face Detection.ICCV 2001).

According to embodiments, the system is trained and tested, and thealgorithms run only on moving objects, thereby reducing thepossibilities and variety of the training and input sets of images. Inshort the classification scheme only needs to recognize moving urbanobjects from each other, as opposed to recognizing one type of objectfrom any other possible matrix of pixels.

A tracking layer detects the trajectory of one given object over time.The system uses a novel approach based on a holistic model of thetrajectories in the image based on existing known foreground objects ornewly emerged objects.

An analysis layer uses the type and trajectory information to detecthigher level, human readable data such as vehicle or pedestrian speed,and people entering or exiting a location. Inferences can also be drawnbased on building layouts, vehicle traffic flows, and pedestrian trafficflows.

Data Algorithms: Line Analysis

Embodiments also include data algorithms that perform specific tasksbased on the data obtained from the main stack of video algorithmsabove. As an example of a data algorithm, line analysis will bedescribed in detail below.

Line analysis is a data algorithm that uses a video of a line to detecthow many people wait in line and how long it takes them to go throughthe whole line. Embodiments analyze a waiting line in real time videosequences. The goal of the algorithm is the estimation of lineattributes in real time that can be useful for somebody in the processof deciding whether to join the line. For example, estimations for thenumber of people that currently wait in the line and for the currentwait time are extracted. The current wait time is an approximation ofthe time that a person will have to wait in the line if she joins it inthis moment. With reference to FIG. 2, analysis 200 of one embodiment isshown. The analysis 200 has three processes that are repeated for everynew captured video frame: 1) detection of activity areas; 2) waitingline segmentation; and 3) measurement of attributes.

With reference to FIG. 3, the first step detects those areas in thevideo sequence that have potential human activity. This step is doneusing the previously described moving foreground detection. The currentframe is the input being run through the process (1.1) movementdetection and process (1.2) foreground detection. The output of thoseprocesses in one instance are combined creating an activity mask and arerun through the (1.1) contour extraction process. The output of this isthe activity contours, which essentially model a waiting line from theinput video data. The output of process (1.1) and (1.2) in anotherinstance is run through the process (1.3) update background model. Theexpected background is generated and that is passed back through process(1.2) foreground detection.

Process (1.1) works specifically by starting with the current frameinput. The current frame input is run through a non-linear time-domainhigh-pass filter which contains processes Z{circumflex over ( )}(−1),absolute difference and binary threshold. After being run through thenon-linear time-domain high-pass filter R, G, B planes with saturationare added. The output of this is run through the space-domain medianfilter. Once filtered the output is run through either of two routes. Inone instance the output is run through a non-linear time-domain low-passfilter which does a time-domain low-pass filter and binary threshold.After running through the filter a copy with the mask is made and thebinary threshold is found. The output of this is considered a highactivity area and is added to the low activity areas produced by theother instance. In the other instance the output from the space-domainfilter has the colors inverted and noisy frames rejected before runningthrough the same linear time-domain low-pass filter described above. Theoutput of this is the low-activity areas. The low-activity area issubtracted from the high activity area to return the area with movement.

Process (1.2) starts with the inputs current frame and expectedbackground. The absolute difference of the current frame and theexpected background is found and then R, G, B planes with saturation areadded. The absolute difference is then merged with Background (MADB) andthe binary threshold of that is found.

Process (1.3) works specifically by starting with an activity mask asthe input. The activity mask is sent through an opening process and thenthe mask is expanded. The MAM is introduced to the output of thatprocess and the mask areas where background does not change are sent tobe copied and combined with the expected background. After the MAM isintroduced the process will also invert the mask and take the areaswhere the background does change to make a copy of the current frameusing these mask areas. It also will take a copy of that mask andcombine it with the expected background. The weighed sum of these copiesis found and combined with the masked copy of unchanged background.

Process (1.4) contour extraction starts with the input activity mask. Anopening is applied on the activity mask and the output is run throughthe TC89 algorithm to return the activity contours.

With reference to FIG. 4, the second stage infers which areas from thefirst step actually conform to the waiting line, rejecting any othersurrounding activity. The waiting line segmentation finds the activitycontours from the previous block and determines which of them actuallybelong to the waiting line. The algorithm needs a manually-defined areawhere to look for the line head. The line head is at the point towardswhich people in the line are waiting to access and is composed by thepeople that are about to access. If such line head is found, the rest ofthe line's first segment is found by fitting a curve model. Then, if theline has discontinuities due to the gaps between the people or occludingobjects, any other potential line fragments are sought and included inthe model. Finally, a longer-term line model is updated with the linefound in the current frame, in case that the observation is not toonoisy.

There can be situations in which the image of the waiting line has gaps.This can be due to people standing too far from each other or becausethe line passes behind occluding objects, like trees or light poles. Tocope with these situations, contours that lay after the line's firstcontour end point are sought. If they meet the certain conditions, theyare appended to the line's tail, the end point is updated and the searchprocess is repeated until no more potential line contours are found.

Referring to FIG. 4 in more detail, the process of waiting linesegmentation starts with the activity contours as input. Then theoperation (2.1) find line first contour is completed producing an inputthat is run through the operation (2.2) find optimal path from startpoint over contour. The output of this operation is run throughoperation (2.3) to extend path from end point of first contour overfragmented contours. The output of (2.3) is run through the operation(2.4) update line model which creates two outputs being the curve modelof line and the line contours.

The operation (2.1) find line first contour starts with the inputactivity contours. The activity contours are run through the operationto find contours that touch the user-defined line start box. The outputof the operation is then sorted to find the one with the largest area.The output from this is the line first contour.

The operation (2.2) find optimal path from start point over contour usesthe input line first contour. The line first contour is processed toextract the contour curvature. The output of this is run through alow-pass filter curvature. After the filter the curvature local maximais found. The output results then provide the path over the contourbetween start point and a local maxima that maximizes the benefit scoreB. The output of this process is the optimal curve model.

The operation (2.3) extend path from end point of first contour overfragmented contours operates by taking the optimal curve model as aninput. The end point of the optimal curve model is then found. Then thederivative at local interval around optimal curve end point is found.The next operation is the initialization step for an iterative process,where the current line first contour is stored in S, all other contoursare stored in R, and the curve end point is added as the first elementof the path set P, this first element is represented by assigningsubscript index i to zero. The iterative process will go through allcontour elements N in R that are close to the current line first contourS and do not imply a subtle turn, these two decisions are made alsobased on the input threshold maps. Threshold maps are also an input atthis part of the process. The output is then analyzed for two outcomes:if size of N==0 then the extended path (P) has been found; and if sizeof N==0 is not true then S=N, remove N from R. This process recalculatesthe average of all elements in N of the element's farthest point fromthe current optimal curve end point. The derivative is then updated withthis estimated average. The current optimal curve end point then equalsthe point of contour in N whose projection is highest over thederivative. The output of this process then added to the extended pathP, then iteration of the calculation of N using threshold maps takesplace.

The operation (2.4) update line model starts with the input extendedpath (P). The path is subsampled to a fixed number of points. Subsamplesare used to find the total length of the extended path (P) which issubtracted from its inverse, yielding a delta L which is input to aGaussian estimator and that is used for normalization.

If normalized delta L is determined to be too high, then the curve modelof the line has been found. If normalized delta L is not determined tobe too high, the line model is updated with P before outputting thecurve model of the line.

With reference to FIGS. 5 and 6, the third step estimates the lineattributes of interest. There are currently two attributes that can bemeasured for a waiting line: the number of people in the line and theaverage wait time. The number of people is estimated from the linelength with a heuristic people density function. The wait time isinferred from the line length and an estimation of the average linespeed.

The estimation of the number of people that wait in the line is the lineintegral along the line model of a people density function. Since thedensity function variable is a distance over the ground plane, atransformation from image pixels to ground plane distance units must beapplied first. The transformation is pre-computed for the specificcamera intrinsic and extrinsic parameters. The density function isnumerically integrated and, therefore, a first super-sampling step isrequired to ensure proper accuracy of the result.

In low quality video footage, it is sometimes impossible to distinguishindividual people, so tracking waiting persons to know the time that ittakes to travel the whole line is usually not viable. Instead, thisapproach to estimating the average wait time consists in dividing theline length by the average line speed. The line speed is estimated bycomputing the optical flow of a set of salient points into the linecontours over each pair of consecutive frames.

The salient points are found by running the Shi-Tomasi corner detector[1] over the line contour areas. The optical flow is computed with apyramidal version of the Lucas-Kanade algorithm [2]. Noisy flowvectors—those with impossible speeds for a person walking in a line—areremoved from the resulting set. When dividing the line length by theaverage speed, the resulting wait time is a number of frames. Thisfigure depends on the camera frame rate. The conversion to seconds isachieved by dividing the result by the camera frame rate. Since thesystem has to deal with variable frame rate video streams, there is aframe rate estimator block that provides this measure.

Referring to FIG. 5 in more detail, some of the many attributes that canbe estimated include 3.1 an estimate of the number of people, and 3.2 anestimate of average wait time. To estimate the number of people, thecurve model of line is super-sampled and the output lengths aresegmented in pixels to real ground units using a camera-to-ground-planetransform. The density of people function is integrated over the realline, yielding the estimate of the number of people.

Referring to 3.2, the average wait time is estimated by transforming theline contours and picking contours for shortest length model, also usinga transform of the curve model of the line. Mask contours are generatedfrom the contours. Then a copy with the mask (using the current frame)is used to find Shi-Tomasi features in this masked frame. Also, aninversed transformed copy with the mask (using the transformed currentframe) is used to find Shi-Tomasi features the Shi-Tomasi features inthe second copy. Shi-Tomasi features from both copies are inputs to theLucas-Kanade Pyramidal optical flow the input is provided to computeflow vectors. Then noisy flow vectors are filtered out and resultingvectors are projected over the line model.

Using a camera-to-ground-plane transformation, then the camera vectorsare transformed to ground vectors and averaged, yielding a line speedestimate which is filtered for line speed outliers both with and withoutbeing run through a Gaussian estimator. The filtered line speed is runthrough the time-domain low-pass filter to obtain average wait frames(line_length divided by line_speed). The average wait frames are thenfiltered and converted from frames to seconds using a wait frameestimator, to yield an average wait.

Additional Data Algorithms

Queue Time Estimation

FIG. 6 is an illustration 600 of sampling data for queue time estimationaccording to an embodiment. Between start point and end point samplingintervals are predetermined as shown. During sampling interval 1, forexample, a contour centroid (along the heavy line indicating a generallycentral physical location of the objects that generate data to be sampleis calculated The lighter line surrounding the area of the heavy lineindicated the range of physical locations of such objects.

Referring to FIG. 6A, in various embodiments herein, queue timeestimation is the idea of using video streams from a static camera todetect queuing lines and estimate the queuing time required for the nextperson to join the queue.

This algorithm assumes a static camera is looking at a line with astatic end point but potentially varying starting points or shapes ofthe line itself.

The goal is to estimate wait time in the line.

In an embodiment, the method includes three main modules: foregroundsegmentation, queuing line construction, and queuing time estimation.

A foreground segmentation module (1) builds a background model from astatic video stream (see also the discussion of object detection andtracking section) and segment out all foreground blobs in the scene.

A queue skeleton extraction module (2) constructs a line model based onconsistency in shape and orientation of connected foreground blobs foreach pre-selected start point of the queue. One approach used to definethe line is a mathematical morphology skeleton extraction. It could alsobe a B-spline approximation or any other algorithm that extracts thecenter line of a surface.

Unrelated foreground in the scenes are removed while discontinuedforeground blobs of the line are added, both calculated based on theirconsistency with the line model. Once the line skeleton is extracted, wecan compute line length (in pixels), line areas.

A motion speed estimation module (3) receives the output of the lineskeleton extraction module (2). This module estimates the speed of theline in pixels/second, at each point of the line. By using a standardtracking algorithm such as salient point and local feature tracking,gradient descent tracking, or video flow, we can compute image motion inthe line area. We can then project each estimated motion vector onto theline skeleton, using a perpendicular projection. Each project gives anindication of speed along the line. By averaging out all samples alongthe line, and filling empty areas with linear interpolation, we canestimate the speed of the line at any point of the line skeleton.Samples need to be regularly spaced to get a good estimation.

Wait time estimation (4) estimates how long someone would wait in lineif they joined the line now. Now that we have a speed estimate at eachpoint of the line, in pixels per seconds, all we need to do is dividethe distance between two pixels of the skeleton by the average speedbetween these two pixels. We define a sampling step S and start at thefirst pixel of the line, using this pixel (index n) and the n+S pixel tomeasure the estimate. We add up estimates until the second index reachesthe end of the line.

FIG. 7 is shows a user interface display with a waiting line as capturedby a video camera with currently calculated attributes imposed on theimage.

Automated Segmentation of Urban Scenes: By Analyzing where, on Average,People or Vehicles or Bicycles are Located in an Image we canAutomatically Detect where Sidewalks, Roads, Bike Routes and RoadCrossings are.

Using the same algorithms as the ones described above, we havetrajectory information about different types of elements of urbanscenes. We focus on pedestrian, vehicles, public transportationvehicles, bicycles. By adding up all trajectories in a map of the videofeed (pixels corresponding to the video feed pixels) we can have a mapof where each type of elements moves and is in the image. If it ispedestrians, these areas will be mostly sidewalks, crossroads, parks,plazas. If it is vehicles, it will be roads. For bicycles it will bebicycle lanes. If we detect both vehicles and pedestrians at nonoverlapping times, this will be crosswalks.

This map will be quite accurate even if the detection and classificationof objects is not very accurate. We typically can work with detectorsthat have a<10% false positives rate and >50% detection rate. Using thisapproach we can automatically build a map of the image, thus improvingclassification results. We can indeed either post process detectionscores based on this map—a pedestrian detection score in a sidewalk areawill be increased, decreased in non-classified areas (buildings, sky, .. . ). Or we can adjust algorithm parameters based on image location—aprior optimization approach as opposed to the posterior approachdescribed right before.

Analyzing the scene viewed by a static camera that runs the algorithmspreviously described has several positive impacts:

1. reducing noise: if we know where streets and sidewalks and crosswalksare we can eliminate any detection that is not an expected object—toobig or too fast for one of the expected objects for example. We can alsoremove all detections outside of these zones.

2. automating setup: if we can automatically detect streets, sidewalks,crosswalks and entrances of buildings, we can automatically setturnstiles or building entrances to start counting people there, withoutany manual intervention.

3. camera calibration: if we know what type of objects are on average ina given zone, we can estimate calibration of the camera by comparing theexpected surface of that object, based on speed angle, with the reallife estimated size of this object. We can create a map where each pixelcontains its estimated dimensions in actual dimensions, in meters.

The output for this scene analysis is: a set of scene “flows” or zonesthat are zones where one type of object is in majority; the type ofobject for these zones; the average surface and speed of an object ateach point of this zone.

In order to get to this scene analysis, an embodiment uses the followingalgorithm components:

1. Trajectory computation over a long period of time: Using the samealgorithms as the ones described above, we have trajectory informationabout different types of elements of an urban scene. We let thisalgorithm run on enough video coming from this scene to extract aminimum of T trajectories of objects.

2. Trajectory clusterization using a DBSCAN variant: DBSCAN is analgorithm to clusterize points. We transpose it literally to classifytrajectories. For that we define a trajectory distance that is computedas follows:

-   -   we consider trajectories A and B    -   for each point in A, find the closest point in B    -   distance for that point is the euclidean distance of the two        points, combined with the angle difference between the two        points, combined with the surface difference between the two        points. Not that we don't use the speed norm difference, just        angles. Combination can be harmonic or linear.    -   we compute point distance for each point in trajectory A, then        add them up and divide the result by the number of points in A.    -   we then do the opposite, starting with B    -   the final distance is the maximum of the two distances    -   some variants are possible in the combination of all point        distances: e.g. take the 50% lower distance points. Or do not        divide by the number of points.    -   The output of this trajectory-DBSCAN algorithm is a set of        groups of trajectories that fit together.

Then, for each cluster, we use these trajectories to compute a map for a“scene flow”, or group of trajectories. We first compute a mask of allpixels where there is a trajectory point, or that sits on a line betweentwo consecutive points. We dilate this mask by a radius r—usingmorphological dilation using a square structuring element.

For each point of this mask, we look for trajectory points that are onthe same coordinates. We compute an average and standard deviation forall these points, of the following measures: mask surface, mask width,mask height, speed norm average, speed norm standard deviation, speedangle average (−90 to 90 degrees) and speed angle standard deviation.

Once direct points are computed we go through all points in the maskthat do not have a value and compute a value by spatial interpolation.In one embodiment, bilinear interpolation is used.

3. Ad-hoc or advanced cluster classification: Once we have all theseclusters, what type of objects they contain in majority is to bedetermined. There are two approaches to that: ad-hoc and object classapproaches.

Object class approach: if the resolution of the image is good enough torun a cascade classifier such as described above, we can get anestimated class for each object of each trajectory. We then take themajority class over the mask of the flows as described above, and assumethis majority class is the main class of this flow. We do this for eachflow above.

Ad-hoc approach: if we assume we have two classes, one being vehiclesand one being people, we can assume that there are two classes of sizesfor flows in the image. We have to keep in mind that we can have strongperspective effects, so only neighboring points can be compared to seeif the objects they contain are larger or smaller than each other. Ifobjects are too far away, the perspective effect might supercede actualobject size. So for each flow, we consider all of its contour points.For each contour point, we look for immediate neighbors that in otherflows. If we find some, that are closer to a distance D, we can compareaverage object dimensions between that point and its immediateneighbors. If we find enough examples where the starting point is muchlarger, by a factor T, than the neighbors, we can tag the point as a“large” point. If we find enough points where the starting point is muchsmaller, with a factor S, we can tag the starting point as “Small”. Overone contour of a flow, if more than a given percentage P of points are“large”, we tag the flow as vehicles. Over one contour of a flow, ifmore than a given percentage Q of points are “small”, we tag the flow aspedestrians. Otherwise we leave it untagged.

4. Calibration map: Once all flows are tagged, we can start building thecalibration map. Take all flows with a tag. For each point of the flow,consider the average surface, width and height, expressed in pixels, ofan object.

Now consider the typical width, height and depth of a person or avehicle. This can depend on geographies—in some places average peopleare smaller, in some places vehicles are larger. We can compute aprojection model where based on this 3D model of an object and theobserved motion, we can estimate the expected width, height and surfaceof the projected object expressed in meters.

Now for each point of the flow, we can compute the ratio of squaremeters per square pixels for an object. By taking the square root ofthat number and dividing it by sqrt(2.0) we get the estimated dimensionof a pixel (width and height), expressed in meters.

A post processing to remove noise such as median filter can be useful toclean up the signal. A variant is to also use the width and height inpixels and in meters to have two other estimates of that pixeldimensions, and then average out or median filter the three estimates.

5. Speed/dimensions estimation: Now that we have an estimation of thereal life dimensions of a pixel, we can estimate real life dimensionsand speeds of objects. We just have to multiply the dimensions in pixelsby the meter to pixel ratio of the calibration map. An alternative is touse geometric angles to fine tune this estimate—if the angle is 45degrees the real life speed is (speed in pixels/sec)×(meter/pixelratio)*cos 45. If angle is 0 or 90, the real life speed is (speed inpixels/sec)×(meter/pixel ratio).

Object Detection and Classification.

FIG. 8 is a flow diagram of a process of object detection,classification, object tracking and analysis according to an embodiment.With reference to FIG. 8, embodiments of video algorithms detect andtrack foreground objects from static cameras and infer high levelinformation such as object count and speed in real-time. They are basedon a four-layer stack: object detection, classification, tracking andanalysis. These algorithmic layers are based on the assumption thatvideo feeds have a mostly static viewpoint and a frame rate greater than0.2 frames per second.

A background/moving object detection process (1) takes as input an imagefrom a static camera. Process (1) outputs groups of foreground pixelsand a dynamic model of the background.

A goal of this layer is to detect moving objects or moving parts in theimage. It is based on estimating the background image of a fixed videostream, by modeling each point using a Gaussian distribution of valueson each channel of a color image, or the amplitude of the combinedchannels. For color images, the value of each channel is modeled as aGaussian distribution. The Gaussian model, defined by its 0 and 1moment, or mean and variance, is created and stored in memory for eachcoordinate point of an image.

In order to determine if a pixel p is part of the background orforeground, we compute a normalized distance metric of a pixel to thebackground value as the linear combination of the normalized distancefor each channel. A normalized distance for a channel is defined as theabsolute distance from the pixel channel value to the background value,divided by its standard deviation.d(i)=(v(i)−b(i))/sigma(i)

where (i) is the channel index, v the current pixel channel value, b thebackground channel value and sigma the current estimate of thebackground channel value standard deviation.D=d(0)+d(1)+d(2) if the image is a 3 channel color image.

As new frames arrive in the system, we first compute the normalizeddistance of this pixel to the current background Gaussian model. If thevalue is less than a first threshold T1, we consider the pixel as partof the background and update the Gaussian model for this coordinatepoint with the current pixel values.

If the value is greater than T1, we create a new model for a newbackground candidate. Things might have changed in the image and we needa new background candidate to adjust to these changes. If there arealready some background candidates available, we first compute distancesof the current pixels to other candidates. If any distance is less thanT1, we update the best matching candidates (the one with the lowestdistance) with the current value. If no match was found, we create a newcandidate.

If a candidate was not updated for a given period of time S, we cancelthe background candidate.

Each candidate has a lifetime span, that is equal to the time elapsedbetween its creation and its last update. The lifetime span cannot begreater than a parameter E called eternity.LS=MIN(E,t(updated)−t(created)).

If any of the candidate backgrounds has a longer lifetime span than thecurrent background, we cancel the current background value and replaceit with the new, longer lifetime value. This helps the model adjust torapid background changes.

If the distance metric is greater than a different factor T2, we markthe pixel as being part of the foreground.

In order to adjust the Gaussian values to potential changes in the meanand standard deviation, we estimate all Gaussian model values overoverlapping time windows. In order to reduce the complexity of computingall values over moving averages, we use a half-overlapping scheme. If Mis the minimum window size (number of samples) over which we want toestimate Gaussian models, we constantly store two sets of overlappingsums and square sums: the current sum set and the future sum set. Eachset stores the number of samples and the sum of values and the sum ofsquare values that help compute mean and variance. When the first setreaches M samples, we reset the second set and start updating it witheach new frame. When the first set reaches M*2 samples, the future setreaches M samples. We then copy the future set values into the currentset values, and reset the future set. This way, at any point in timeafter M first samples, we always have an estimation of the Gaussianmodel that has more than M samples, and adjust over time windows of M*2samples. M is typically set to values ranging from 10 to 1000 dependingon applications and video frame rates. As a result, outside of thestarting period where we have less than M samples processed in total,all our Gaussian model estimates rely on at least M samples.

In order to reduce computation cost, we can subsample the image spatialreference by a factor P. Also, we can subsample the time reference byanother factor Q—we update the background statistics only once every Qframes. This reduces the number of operations needed significantly.However, the foreground estimation cannot be subsampled, so complexityis only reduced for background estimation. This is very efficient tomake the algorithm real time whatever the dimension or frame rate of avideo. The CPU occupancy of such a process is controlled and definedwith these two parameters. This is a unique way to linearly adjustalgorithm reactivity and accuracy based on available or desiredcomputation power.

An object pixel classification process (2) takes as input groups offoreground pixels. The output is one or more objects per group with anassociated class.

The goal of this layer is to classify foreground described from process(1) above into classes of known objects or “noise”. In an embodiment, acustomized version of the ADABOOST Cascade approach is used.

Once we have detected all moving objects we classify them using aclassic supervised learning approach, based on the ADABOOST Cascadeclassification (described in Viola and Jones P. A. Viola, M., and J.Jones: Robust Real-Time Face Detection. ICCV 2001).

Embodiments of the method train, test and run the algorithm only onmoving objects, thereby reducing the possibilities and variety of thetraining and input sets of images. In short our classification schemeonly needs to recognize moving urban objects from each other, as opposedto recognizing one type of object from any other possible matrix ofpixels.

This step also helps separate groups or aggregates in some cases—if acar and pedestrians are close to each other and detected as the sameobject, we will be able to detect them separately in many occasions,thus splitting the original object in two separate objects.

An object tracking process (3) takes as input an instance of one objectat one point in time, with or without associated class. The output is alinked appearance of the same objects at different times, withtrajectory and shape over time.

The goal of this layer is to connect the occurrence of the same objectin consecutive frames so as to understand the object's movement in theimage.

At each new frame, we try to match new foreground objects with existing,connected objects tracked in prior iterations, or if no match is found,we create a new object. We use a combination of shape, predictedposition based on previous motion, and pixel content, to do thematching.

An object trajectory analysis and classification process (4) takes asinput objects with trajectories, and outputs high level information onobjects.

The goal of this layer is to use the type and trajectory information todetect higher level, human readable data such as vehicle or pedestrianspeed, and people entering or exiting a location. We can also infer onthe building layouts based on traffic flows of pedestrians and vehicles.

Using the same algorithms as the ones described above, we havetrajectory information regarding different types of elements of urbanscenes. For this data analysis, the focus is on pedestrian, vehicles,public transportation vehicles, bicycles. By adding up all trajectoriesin a map of the video feed (pixels corresponding to the video feedpixels) we can have a map of where each type of elements moves and is inthe image. If it is pedestrians, these areas will be mostly sidewalks,crossroads, parks, plazas. If it is vehicles, it will be roads. Forbicycles it will be bicycle lanes. If both vehicles and pedestrians aredetected at non overlapping times, this will be crosswalks. This mapwill be quite accurate even if the detection and classification ofobjects is not very accurate. Embodiments typically work with detectorsthat have a<10% false positives rate and >50% detection rate.

Using this approach a map of the image is automatically built up, thusimproving classification results. A post process detection scores can beposted based on this map—a pedestrian detection score in a sidewalk areawill be increased, decreased in non-classified areas (buildings, sky,etc.). Or the algorithm parameters can be adjusted based on imagelocation—a prior optimization approach as opposed to the posteriorapproach described right before.

Automated Detection of Building Entrances Using Trajectories: Areaswhere Many Trajectories Start or End are Likely to be BuildingEntrances.

The recognition and tracking algorithms described above are able todetect, recognize and track the trajectories of pedestrians, vehicles,and other types of urban elements. Based on the output of thisalgorithm, we are able to detect starting points and ending points ofpeople or vehicles. We can detect areas of the video streams where morepeople or vehicles start or end their trajectories over long periods oftime—typically 24 hours are required. These areas, when not on theborder of the video streams, are areas where these elements appear ordisappear.

Some of these areas will be areas of occlusion—a tree canopy, a largeobject hiding the view, etc. In such cases there are clear borders tothe start and end points of trajectories and no trajectory will start orend, at all, where the occlusion is.

In cases where trajectories appear or disappear in a more scattered anddistributed way, we probably are seeing a building entrance.

In order to automatically detect building entrances or exits, werepresent all starting or ending points of trajectories on a map of thevideo stream. Then we run a local window analysis of the geographicdistribution of these points. We can either use moments or simply crosspoint distance, or even principal components analysis. Moments anddistances have proven to be great indicators of building entrances. Thisis extremely valuable to detect building entrances automatically andalso valuable to start counting people coming in and out. Everytrajectory starting in that entrance area will count as one personexiting the building. Every trajectory ending there will count as aperson entering the building. By counting these entrances and exitscontinuously, statistically correcting numbers for detection errors, wecan get to a real time count of occupancy and traffic in a givenlocation. This is valid for people, cars, any type of vehicles.

Aspects of the systems and methods described herein may be implementedas functionality programmed into any of a variety of circuitry,including programmable logic devices (PLDs), such as field programmablegate arrays (FPGAs), programmable array logic (PAL) devices,electrically programmable logic and memory devices and standardcell-based devices, as well as application specific integrated circuits(ASICs). Some other possibilities for implementing aspects of the systeminclude: microcontrollers with memory (such as electronically erasableprogrammable read only memory (EEPROM)), embedded microprocessors,firmware, software, etc. Furthermore, aspects of the system may beembodied in microprocessors having software-based circuit emulation,discrete logic (sequential and combinatorial), custom devices, fuzzy(neural) logic, quantum devices, and hybrids of any of the above devicetypes. Of course the underlying device technologies may be provided in avariety of component types, e.g., metal-oxide semiconductor field-effecttransistor (MOSFET) technologies like complementary metal-oxidesemiconductor (CMOS), bipolar technologies like emitter-coupled logic(ECL), polymer technologies (e.g., silicon-conjugated polymer andmetal-conjugated polymer-metal structures), mixed analog and digital,etc.

It should be noted that the various functions or processes disclosedherein may be described as data and/or instructions embodied in variouscomputer-readable media, in terms of their behavioral, registertransfer, logic component, transistor, layout geometries, and/or othercharacteristics. Computer-readable media in which such formatted dataand/or instructions may be embodied include, but are not limited to,non-volatile storage media in various forms (e.g., optical, magnetic orsemiconductor storage media) and carrier waves that may be used totransfer such formatted data and/or instructions through wireless,optical, or wired signaling media or any combination thereof. Examplesof transfers of such formatted data and/or instructions by carrier wavesinclude, but are not limited to, transfers (uploads, downloads, e-mail,etc.) over the internet and/or other computer networks via one or moredata transfer protocols (e.g., HTTP, FTP, SMTP, etc.). When receivedwithin a computer system via one or more computer-readable media, suchdata and/or instruction-based expressions of components and/or processesunder the system described may be processed by a processing entity(e.g., one or more processors) within the computer system in conjunctionwith execution of one or more other computer programs.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense as opposed to anexclusive or exhaustive sense; that is to say, in a sense of “including,but not limited to.” Words using the singular or plural number alsoinclude the plural or singular number respectively. Additionally, thewords “herein,” “hereunder,” “above,” “below,” and words of similarimport refer to this application as a whole and not to any particularportions of this application. When the word “or” is used in reference toa list of two or more items, that word covers all of the followinginterpretations of the word: any of the items in the list, all of theitems in the list and any combination of the items in the list.

The above description of illustrated embodiments of the systems andmethods is not intended to be exhaustive or to limit the systems andmethods to the precise forms disclosed. While specific embodiments of,and examples for, the systems components and methods are describedherein for illustrative purposes, various equivalent modifications arepossible within the scope of the systems, components and methods, asthose skilled in the relevant art will recognize. The teachings of thesystems and methods provided herein can be applied to other processingsystems and methods, not only for the systems and methods describedabove.

The elements and acts of the various embodiments described above can becombined to provide further embodiments. These and other changes can bemade to the systems and methods in light of the above detaileddescription.

In general, in the following claims, the terms used should not beconstrued to limit the systems and methods to the specific embodimentsdisclosed in the specification and the claims, but should be construedto include all processing systems that operate under the claims.Accordingly, the systems and methods are not limited by the disclosure,but instead the scope of the systems and methods is to be determinedentirely by the claims.

While certain aspects of the systems and methods are presented below incertain claim forms, the inventors contemplate the various aspects ofthe systems and methods in any number of claim forms. For example, whileonly one aspect of the systems and methods may be recited as embodied inmachine-readable medium, other aspects may likewise be embodied inmachine-readable medium. Accordingly, the inventors reserve the right toadd additional claims after filing the application to pursue suchadditional claim forms for other aspects of the systems and methods.

What is claimed is:
 1. A method for detecting building entrances usingvideo data, the method comprising: a special purpose processorcollecting video data from a plurality of dissimilar sources; thespecial purpose processor, in an iterative process, defining knownforeground objects and newly emerged objects; the special purposeprocessor determining moving objects from the video data, whereindetermining moving objects from the video data comprises estimating thebackground image of a fixed video stream, comprising modeling points inthe video data using a Gaussian distribution of values on each channelof a color image; the special purpose processor classifying the movingobjects from the video data, wherein classifying moving objectscomprises receiving groups of foreground pixels and outputting one ormore objects per group with an associated class using class supervisedlearning, and wherein classifying comprises classifying movingforeground objects into one of a plurality of different known objects;the special purpose processor training, testing, and running a testalgorithm only on moving objects, thereby reducing the possibilities andvariety of training and input sets of images, such that groups andaggregates can be separated if necessary, splitting an original objectinto two separate objects; the special purpose processor tracking theclassified known objects from the video data wherein tracking comprisesreceiving as input an instance of one object at one point in time andcalculating its trajectory and shape over time, and for each new videoframe attempting to match foreground objects with existing objectstracked in prior iterations of the iterative process, and determiningwhere the classified known objects start and end their trajectories overa period of time; the special purpose processor determining likelylocation of a building entrance based on where the classified knownobjects start and end their trajectories over the period of time; andthe special purpose processor processing the video data as video streamsfrom the plurality of dissimilar sources, providing video data ofdifferent types, to allow the video data from the plurality ofdissimilar sources to be analyzed without dependence on a source of anyof the video data.
 2. The method of claim 1, further comprising thespecial purpose processor: representing all starting points and endingpoints of trajectories on a map of the video streams; and performing alocal window analysis of a geographic distribution of the startingpoints and ending points.
 3. The method of claim 1, wherein the videodata comprises a plurality of images, and wherein the image data issubsampled by an integer factor to facilitate processing speed.
 4. Themethod of claim 1, wherein the video data comprises a plurality ofimages, and wherein determining moving objects comprises determiningbackground statistics, wherein background statistics can be updated atvariable intervals to affect different processing speeds.
 5. The methodof claim 1, wherein tracking the classified known objects comprisesreceiving an instance of an object at a point in time and outputting alinked appearance of the same object at different times, with trajectoryand shape over time.
 6. The method of claim 1, wherein analyzing thevideo data comprises receiving objects with trajectories and outputtinginformation regarding the objects, comprising speed, of objects, objectsentering or leaving a location, and inference of building layouts basedon movement of objects.
 7. A non-transient computer readable mediumhaving stored thereon instructions, that when executed by a specialpurpose processor cause a method for activity monitoring using videodata to be performed, the method comprising: a special purpose processorcollecting video data from a plurality of dissimilar sources; thespecial purpose processor, in an iterative process, defining knownforeground objects and newly emerged objects; the special purposeprocessor determining moving objects from the video data, whereindetermining moving objects from the video data comprises estimating thebackground image of a fixed video stream, comprising modeling points inthe video data using a Gaussian distribution of values on each channelof a color image; the special purpose processor classifying the movingobjects from the video data, wherein classifying moving objectscomprises receiving groups of foreground pixels and outputting one ormore objects per group with an associated class using class supervisedlearning, and wherein classifying comprises classifying movingforeground objects into one of a plurality of different known objects;the special purpose processor training, testing, and running a testalgorithm only on moving objects, thereby reducing the possibilities andvariety of training and input sets of images, such that groups andaggregates can be separated if necessary, splitting an original objectinto two separate objects; the special purpose processor tracking theclassified known objects from the video data wherein tracking comprisesreceiving as input an instance of one object at one point in time andcalculating its trajectory and shape over time, and for each new videoframe attempting to match foreground objects with existing objectstracked in prior iterations of the iterative process, and determiningwhere the classified known objects start and end their trajectories overa period of time; the special purpose processor determining likelylocation of a building entrance based on where the classified knownobjects start and end their trajectories over the period of time; andthe special purpose processor processing the video data as video streamsfrom the plurality of dissimilar sources, providing video data ofdifferent types, to allow the video data from the plurality ofdissimilar sources to be analyzed without dependence on a source of anyof the video data.
 8. The non-transient computer readable medium ofclaim 7, wherein the video data comprises a plurality of images, andwherein the image data is subsampled by an integer factor to facilitateprocessing speed.
 9. The non-transient computer readable medium of claim7, wherein the video data comprises a plurality of images, and whereindetermining moving objects comprises determining background statistics,wherein background statistics can be updated at variable intervals toaffect different processing speeds.
 10. The non-transient computerreadable medium of claim 7, wherein tracking the classified knownobjects comprises receiving an instance of an object at a point in timeand outputting a linked appearance of the same object at differenttimes, with trajectory and shape over time.
 11. The non-transientcomputer readable medium of claim 7, wherein analyzing the video datacomprises receiving objects with trajectories and outputting informationregarding the objects, comprising speed, of objects, objects entering orleaving a location, and inference of building layouts based on movementof objects.
 12. A system for processing multiple video data streams,comprising: a plurality of input video data sources; a backend subsystemconfigured to receive video data from the plurality of input video datasources, the backend subsystem comprising, a plurality of video analysisworkers comprising special purpose processors tasked with executingvideo analysis worker processes, comprising, in an iterative process,defining known foreground objects and newly emerged objects; determiningmoving objects from the video data, wherein determining moving objectsfrom the video data comprises estimating the background image of a fixedstream, comprising modeling points in the video data using a Gaussiandistribution of values on each channel of a color image; classifying themoving objects from the video data, wherein classifying moving objectscomprises receiving groups of foreground pixels and outputting one ormore objects per group with an associated class using class supervisedlearning, and wherein classifying comprises classifying movingforeground objects into one of a plurality of different known objects;training, testing, and running a test algorithm only on moving objects,thereby reducing the possibilities and variety of training and inputsets of images, such that groups and aggregates can be separated ifnecessary, splitting an original object into two separate objects;tracking the classified known objects from the video data, whereintracking comprises receiving as input an instance of one object at onepoint in time and calculating its trajectory and shape over time, andfor each new video frame attempting to match foreground objects withexisting objects tracked in prior iterations of the iterative processand determining where the classified known objects start and end theirtrajectories over a period of time; wherein tracking the classifiedknown objects comprises tracking classified known objects from aplurality of dissimilar sources, which supply video data of differenttypes to allow the video data from the plurality dissimilar sources tobe analyzed without dependence on a source of any of the video data; anda data analytics module configured to receive processed video data fromthe plurality of video analysis workers and output human readableinformation, wherein the human readable information comprises likelylocations of building entrances determined based on where the classifiedknown objects start and end their trajectories over the period of time.13. The system of claim 12, wherein the data analytics module is furtherconfigured to access external data sources, including weather datasources, and event information sources.
 14. The system of claim 12,further comprising at least one user interface configured to provide thehuman readable information to a user any computing device withprocessing capability, communication capability, and display capability,including personal computers and mobile devices.